package com.example.leetcode.trainingcamp.week3.Thursday;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
 *
 * <p>有效字符串需满足：
 *
 * <p>左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/valid-parentheses
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test20 {
    // 类似这种消消乐就可以使用stack
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        int len = s.length();
        for (int i = 0;i<len;i++){
            char c = s.charAt(i);
            if (c == '(' || c == '[' || c== '{'){
                stack.push(c);
            }else if (c == ')' || c== ']' || c== '}'){
                if (stack.isEmpty()){
                    return false;
                }
                Character pop = stack.pop();
                String s1 = "" + pop + c;
                if (!(s1.equals("[]") || s1.equals("{}") || s1.equals("()"))){
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}


class Demo20{
  public static void main(String[] args) {
    Test20 t = new Test20();
    String s = "()";
    System.out.println(t.isValid(s));
  }
}